#!/bin/bash

# 使用中文提示用户输入 IP 地址
read -p "请输入 IP 地址（限制在 192.168 网段）：" ip_address

# 校验 IP 地址是否合法
while ! [[ "$ip_address" =~ ^192\.168\.[0-9]+\.[0-9]+$ ]]; do
  read -p "IP 地址不合法，请重新输入： " ip_address
done

# 获取 IP 地址的最后两段
ip_parts=(${ip_address//./ })
last_two_ip_parts="${ip_parts[2]}${ip_parts[3]}"

# 使用中文提示用户输入子网掩码，默认为 24
read -p "请输入子网掩码（默认值：24）：" subnet_mask
subnet_mask=${subnet_mask:-24}

# 计算网关地址
gateway_ip=$(echo "$ip_address" | awk -F "." '{print $1"."$2"."$3".1"}')

# 使用中文提示用户输入 DNS 服务器地址，默认为网关地址
read -p "请输入 DNS 服务器地址（默认为网关地址）：" dns_server
dns_server=${dns_server:-$gateway_ip}

# 使用中文提示用户输入主机名，默认为 al+IP 最后两段的值
read -p "请输入主机名（默认为 al$last_two_ip_parts）：" hostname
hostname=${hostname:-al$last_two_ip_parts}

# 使用 nmcli 命令配置网络
nmcli connection modify ens18 ipv4.addresses "$ip_address/$subnet_mask"
nmcli connection modify ens18 ipv4.gateway "$gateway_ip"
nmcli connection modify ens18 ipv4.dns "$dns_server"
nmcli general hostname "$hostname"

# 检查 hosts 文件中是否已配置 IP 和主机名的映射
if ! grep -q "$ip_address $hostname" /etc/hosts; then
  # 如果没有配置，则将映射添加到 hosts 文件中
  echo "$ip_address $hostname" >> /etc/hosts
fi

# 重启网络服务
#nmcli connection down ens18
#nmcli connection up ens18

echo "网络配置完成！"

# 网络配置完成后关闭系统
shutdown -h now

echo "系统即将关闭！"